/*
 * Tencent is pleased to support the open source community by making 蓝鲸 available.
 * Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.
 * Licensed under the MIT License (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 * http://opensource.org/licenses/MIT
 * Unless required by applicable law or agreed to in writing, software distributed under
 * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 * either express or implied. See the License for the specific language governing permissions and
 * limitations under the License.
 */

package logics

import (
	redis "gopkg.in/redis.v5"
	"time"

	"configcenter/src/common/backbone"
	"configcenter/src/common/errors"
	"configcenter/src/thirdpartyclient/esbserver"
)

type Logics struct {
	*backbone.Engine
	EsbServ      esbserver.EsbClientInterface
	ProcHostInst *ProcHostInstConfig
	ErrHandle    errors.DefaultCCErrorIf
	cache        *redis.Client
}

//InitFunc The method that needs to be executed when the service starts.
func (lgc *Logics) InitFunc() {
	//init resource
	chnOpLock.Do(lgc.bgHandle)
	// timed tigger refresh  host
	go lgc.timedTriggerRefreshHostInstance()

}

// SetCache  set the cache object
func (lgc *Logics) SetCache(db *redis.Client) {
	lgc.cache = db
}

//ProcHostInstConfig refresh process host instance number need config
type ProcHostInstConfig struct {
	MaxEventCount                int
	MaxRefreshModuleCount        int
	GetModuleIDInterval          time.Duration
	FetchGseOPProcResultInterval time.Duration
}
